package main

import (
	"fmt"
	"math"
)

/*
为什么要更多的使用指针作为接收者
1、首先，方法能够修改其接收者指向的值。

2、其次，这样可以避免在每次调用方法时复制该值。若值的类型为大型结构体时，这样做会更加高效。
*/
type Vertex struct {
	X, Y float64
}

func (v *Vertex) Abs() float64 {
	return math.Sqrt(v.X*v.X + v.Y*v.Y)
}
func (v *Vertex) Scale(f float64) {
	v.X = v.X * f
	v.Y = v.Y * f
}
func main() {
	v := &Vertex{3, 4}                  // 定义一个指针变量指向这个结构体
	fmt.Printf("%+v %v \n", v, v.Abs()) // %+v 可以将这个指针变量的值输出
	fmt.Println(v)
	v.Scale(10)
	fmt.Printf("%+v %v \n", v, v.Abs()) // %+v 可以将这个指针变量的值输出
	fmt.Println(v)
}
